M
MLOG
24 Ağustos 2025Türkçe

Form durumu yönetimini kolaylaştırmak ve verimliliği artırmak için React'in experimental_useFormState kancasını keşfedin. Karmaşık formları basitleştirmeyi öğrenin.

React experimental_useFormState: Gelişmiş Form Yönetimi İçin Kapsamlı Bir Kılavuz

React'in sürekli gelişen ekosistemi, geliştirici deneyimini ve uygulama performansını iyileştirmek için sürekli olarak yenilikçi araçlar sunmaktadır. Bu tür bir gelişme, experimental_useFormState Hook'udur. Şu anda deneysel aşamada olan bu kanca, özellikle React Sunucu Bileşenleri ve Eylemleri ile birlikte kullanıldığında form durumunu yönetmek ve zaman uyumsuz eylemleri gerçekleştirmek için güçlü ve kolaylaştırılmış bir yaklaşım sağlar. Bu kılavuz, experimental_useFormState'in karmaşıklıklarını inceleyerek faydalarını, kullanım durumlarını ve uygulama stratejilerini inceleyecektir.

experimental_useFormState Nedir?

experimental_useFormState Hook'u, React uygulamaları içindeki form yönetimini basitleştirmek için tasarlanmıştır. Form durumu, hataları ve zaman uyumsuz gönderimleri işlemek için açıklayıcı bir yol sunar. Genellikle manuel durum güncellemeleri ve karmaşık olay işleme içeren geleneksel yöntemlerin aksine, experimental_useFormState, tüm form yaşam döngüsünü yönetmek için tek bir kanca sağlayarak bu süreci kolaylaştırır.

Temelinde, experimental_useFormState, bir durum değerini, form gönderme mantığını gerçekleştiren bir işlevle ilişkilendirmenize olanak tanır. Genellikle React Sunucu Bileşenleri bağlamında bir sunucu eylemi olan bu işlev, verileri doğrulamaktan ve gerekli değişiklikleri yapmaktan sorumludur. Kanca daha sonra bu işlevin yürütülme durumunu yöneterek formun durumu hakkında kullanıcıya geri bildirim sağlar (örneğin, yükleme, başarı, hata).

experimental_useFormState Kullanmanın Faydaları

  • Basitleştirilmiş Form Mantığı: Tek bir kancada form durumu yönetimini merkezileştirerek basitleştirilmiş kod.
  • Geliştirilmiş Performans: Gereksiz güncellemeleri en aza indirerek ve sunucu tarafı veri değişikliklerinden yararlanarak oluşturmayı optimize eder.
  • Açıklayıcı Yaklaşım: Açıklayıcı bir programlama stili aracılığıyla daha okunabilir ve bakımı yapılabilir bir kod tabanını teşvik eder.
  • Sunucu Eylemleriyle Sorunsuz Entegrasyon: Verimli veri getirme ve değişiklikleri etkinleştiren React Sunucu Bileşenleri ve Eylemleri ile sorunsuz çalışacak şekilde tasarlanmıştır.
  • Geliştirilmiş Kullanıcı Deneyimi: Kullanıcıya formun durumu hakkında açık ve öz geri bildirim sağlayarak genel kullanıcı deneyimini iyileştirir.

experimental_useFormState için Kullanım Durumları

experimental_useFormState Hook'u, sunucu tarafı doğrulama ve veri değişiklikleri gerektiren karmaşık formlar içeren senaryolar için özellikle uygundur. İşte bazı yaygın kullanım durumları:

  • Kimlik Doğrulama Formları: Kullanıcı kaydı, oturum açma ve parola sıfırlama formlarını işleme.
  • E-ticaret Formları: Ödeme formlarını işleme, kullanıcı profillerini güncelleme ve ürün listelerini yönetme.
  • İçerik Yönetim Sistemleri (CMS): Makaleler oluşturma ve düzenleme, kullanıcı rollerini yönetme ve web sitesi ayarlarını yapılandırma.
  • Sosyal Medya Platformları: Güncellemeler yayınlama, yorum gönderme ve kullanıcı profillerini yönetme.
  • Veri Giriş Formları: Anketler, geri bildirim formları ve müşteri bilgileri gibi çeşitli kaynaklardan veri yakalama ve doğrulama.

Uygulama Örneği: Basit Bir İletişim Formu

experimental_useFormState kullanımını pratik bir örnekle gösterelim: basit bir iletişim formu. Bu form, kullanıcının adını, e-postasını ve mesajını toplayacak, ardından verileri işlenmek üzere bir sunucu eylemine gönderecektir.

1. Sunucu Eylemini Tanımlayın

İlk olarak, form gönderimini işleyen bir sunucu eylemi tanımlamamız gerekir. Bu eylem verileri doğrulayacak ve bir e-posta bildirimi gönderecektir.

```javascript // app/actions.js 'use server'; import { revalidatePath } from 'next/cache'; import { sendEmail } from './utils/email'; // Örnek e-posta gönderme işlevi export async function submitContactForm(prevState, formData) { const name = formData.get('name'); const email = formData.get('email'); const message = formData.get('message'); // Temel doğrulama if (!name || !email || !message) { return 'Lütfen tüm alanları doldurun.'; } try { await sendEmail({ to: 'admin@example.com', // Yönetici e-postanızla değiştirin subject: 'Yeni İletişim Formu Gönderimi', text: `Ad: ${name}\nE-posta: ${email}\nMesaj: ${message}`, }); revalidatePath('/'); // Ana sayfayı veya ilgili yolu yeniden doğrulayın return 'Mesajınız için teşekkür ederiz!'; } catch (error) { console.error('E-posta gönderilirken hata:', error); return 'Bir hata oluştu. Lütfen daha sonra tekrar deneyin.'; } } ```

Açıklama:

  • 'use server' yönergesi, bu işlevin sunucuda yürütülmesi gerektiğini belirtir.
  • İşlev, önceki durumu (prevState) ve form verilerini (formData) argüman olarak alır.
  • Form verilerinden adı, e-postayı ve mesajı ayıklar.
  • Gerekli tüm alanların doldurulmasını sağlamak için temel doğrulama gerçekleştirir.
  • E-posta bildirimini göndermek için zaman uyumsuz bir işlev olan sendEmail'i (ayrıca uygulamanız gerekir) kullanır. Bu, SendGrid, Mailgun veya AWS SES gibi bir hizmet kullanabilir.
  • revalidatePath('/'), Next.js'yi ana sayfanın verilerini yeniden getirmeye zorlayarak ilgili değişikliklerin hemen yansıtılmasını sağlar.
  • Form durumunu güncellemek için bir başarı veya hata mesajı döndürür.

2. React Bileşenini Uygulayın

Şimdi, form durumunu yönetmek ve gönderimi işlemek için experimental_useFormState kullanan React bileşenini oluşturalım.

```javascript 'use client'; import { experimental_useFormState as useFormState } from 'react'; import { submitContactForm } from './actions'; function ContactForm() { const [state, formAction] = useFormState(submitContactForm, null); return (